﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

public partial class Login : System.Web.UI.Page
{
    public string StrUsuCorreoElectronico
    {
        get
        {
            if (ViewState["StrUsuCorreoElectronico"] != null)
                return ViewState["StrUsuCorreoElectronico"].ToString();
            return "";
        }
        set { ViewState["StrUsuCorreoElectronico"] = value; }
    }
    public string StrUsuNit
    {
        get
        {
            if (ViewState["StrUsuNit"] != null)
                return ViewState["StrUsuNit"].ToString();
            return "";
        }
        set { ViewState["StrUsuNit"] = value; }
    }
    public string StrUsuId
    {
        get
        {
            if (ViewState["StrUsuId"] != null)
                return ViewState["StrUsuId"].ToString();
            return "";
        }
        set { ViewState["StrUsuId"] = value; }
    }

    #region CrearContextItems
    private void crearContextItems()
    {
        try
        {
            Context.Items["_StrUsuCorreoElectronico"] = StrUsuCorreoElectronico;
            Context.Items["StrUsuNit"] = StrUsuNit;
            Context.Items["StrUsuId"] = StrUsuId;
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    } 
    #endregion

    

    protected void Page_Load(object sender, EventArgs e)
    {
        RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
    }
    protected void LoginButton_Click(object sender, EventArgs e)
    {
        DataClasses.DataClassesProyectosDataContext
            contexto = new DataClasses.DataClassesProyectosDataContext();
        DataClasses.FE_Symmetric objSymetric = new DataClasses.FE_Symmetric();
        string strClaveEncriptada = objSymetric.EncryptData("098#7UI#OPPDFG", Password.Text);

        var datosUsuarioExiste = (
                            from a in contexto.ADM_USUARIOs
                            where object.Equals(a.USU_USUARIO, UserName.Text) && object.Equals(a.USU_CLAVE, strClaveEncriptada) &&  a.USU_NIT != null
                            select a
                           );
        int intOpcion = 0;
        string strEstadoUsuario = "";
        string strEstadoIntentosFallidos = "";
        string strNombreusuario = "";
        foreach (var v in datosUsuarioExiste)
        {
            strEstadoUsuario = v.USU_ESTADO.ToString();
            strEstadoIntentosFallidos = v.USU_INTENTOS_FALLIDOS_INGRESO.ToString();
            strNombreusuario = v.USU_CORREO_ELECTRONICO;
            Session["USU_USUARIO"] = v.USU_CORREO_ELECTRONICO;
            intOpcion = 1;
            StrUsuId= v.USU_ID.ToString();
            StrUsuNit = v.USU_NIT.ToString();
            StrUsuCorreoElectronico = v.USU_CORREO_ELECTRONICO;
            Session["USU_ID"] = v.USU_ID;
            Session["USU_NIT"] = v.USU_NIT.ToString();
            //Session["USU_CORREO_ELECTRONICO"] = v.USU_CORREO_ELECTRONICO;
        }

        if (intOpcion == 0)
        {
            FailureText.Text = "Usuario o contraseña invalida";
        }
        else if (intOpcion == 1 && strEstadoUsuario == "I")
        {
            FailureText.Text = "EL usuario se encuentra inactivo";
        }
        else if (intOpcion == 1 && strEstadoUsuario == "B")
        {
            FailureText.Text = "EL usuario se encuentra Bloqueado por intentos fallidos";
        }
        else if (intOpcion == 1 && strEstadoUsuario == "A")
        {
            crearContextItems();
            FormsAuthentication.SetAuthCookie(strNombreusuario, false);
            Server.Transfer("admin/VerificarNit.aspx");
            //Response.Redirect("admin/VerificarNit.aspx");
        }

    }
}